[AD] Scalaアプリケーションの開発・保守は合同会社ミルクソフトにお任せください
この記事ではcase object
について解説します。
case objectは、列挙型を定義するために使用する
case object
は、Scala 2系において列挙型を定義する際に活用されます。
sealed abstract class OS(val id: Int) object OS: case object Windows extends OS(0) case object MacOS extends OS(1) case object Linux extends OS(2)
列挙型についてはこちらの記事を参照してください。
Scala 3系(Dotty)においては、enum
キーワードが追加されたため、
列挙型を定義する際にcase object
を使用する必要はなくなりました。
enum OS { case Windows, MacOS, Linux }
したがって、現在、Scala 3においてこの用途ではcase object
を使用する必要はありません。
列挙型におけるcase object
caseキーワードを使用する効果
case
キーワードを付けることにより、toString
メソッドが自動生成されます。
自動生成されたtoString
メソッドを使用すると、クラス名と保持している値を返すようになります。
printlnするときに便利です。
objectキーワードを使用する効果
object
キーワードを付けることにより、当該クラスがインスタンス化され、
スコープ内で唯一のインスタンスであることが保証されます。
これらの特徴が、列挙型を定義するのに役立っているわけです。